package com.example.myapplicationktkt2.ui

import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.ListView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.example.myapplicationktkt2.R

/**
 * ListViewDemoActivity演示了ListView的使用方法
 * 包括基本的ListView展示、点击事件处理等
 *
 * @author Example
 * @since 1.0
 */
class ListViewItemActivity : AppCompatActivity() {

    // UI组件声明
    private lateinit var listView: ListView
    private lateinit var btnAddItem: Button
    private lateinit var btnRemoveItem: Button

    // 数据源
    private val dataList = mutableListOf(
        "项目 1", "项目 2", "项目 3", "项目 4", "项目 5"
    )

    // 适配器
    private lateinit var adapter: ArrayAdapter<String>

    /**
     * Activity创建时调用的方法
     *
     * @param savedInstanceState 保存的实例状态
     */
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_list_view_item)

        initViews()
        setupListeners()
    }

    /**
     * 初始化视图组件
     */
    private fun initViews() {
        listView = findViewById(R.id.listView)
        btnAddItem = findViewById(R.id.btnAddItem)
        btnRemoveItem = findViewById(R.id.btnRemoveItem)

        // 创建适配器
        adapter = ArrayAdapter(
            this,
            android.R.layout.simple_list_item_1,
            dataList
        )

        // 设置适配器
        listView.adapter = adapter


        // 设置列表项点击监听器
        listView.setOnItemClickListener { _, _, position, _ ->
            Toast.makeText(
                this,
                "点击了: ${dataList[position]}",
                Toast.LENGTH_SHORT
            ).show()
        }

        // 设置列表项长按监听器
        listView.setOnItemLongClickListener { _, _, position, _ ->
            Toast.makeText(
                this,
                "长按了: ${dataList[position]}",
                Toast.LENGTH_SHORT
            ).show()
            true // 消费该事件
        }
    }

    /**
     * 设置监听器
     */
    private fun setupListeners() {
        // 添加项目按钮点击事件
        btnAddItem.setOnClickListener {
            val newItem = "项目 ${dataList.size + 1}"
            dataList.add(newItem)
            adapter.notifyDataSetChanged()
            Toast.makeText(this, "添加了: $newItem", Toast.LENGTH_SHORT).show()
        }

        // 删除项目按钮点击事件
        btnRemoveItem.setOnClickListener {
            if (dataList.isNotEmpty()) {
                val removedItem = dataList.removeAt(dataList.size - 1)
                adapter.notifyDataSetChanged()
                Toast.makeText(this, "删除了: $removedItem", Toast.LENGTH_SHORT).show()
            } else {
                Toast.makeText(this, "列表为空", Toast.LENGTH_SHORT).show()
            }
        }
    }
}